package controllers;

import models.Jogador;
import controllers.pojo.Gerenciador;
import play.jobs.Every;
import play.jobs.Job;

@Every("1mn")
public class JobPartidas extends Job {

	public void doJob() {
		System.out.println("Checando partidas antigas...");
		int partidasEmEsperaRemovidas = 0;
		int partidasAtivasRemovidas = 0;
		int tempoLimite = 300000;
		long momentoAtual = System.currentTimeMillis();

		for (Gerenciador partida : Panel.partidasAtivas.values()) {
			if (momentoAtual - partida.momentoUltimaAlteracao > tempoLimite) {
				Jogador jogador = Jogador.find("byId", partida.jogadorAtual().id)
						.first();
				jogador.desistencias++;
				jogador.save();
				Panel.partidasAtivas.remove(partida.idGerenciador);
				partidasAtivasRemovidas++;
			} else if(partida.jogoFinalizado) {
				Panel.partidasAtivas.remove(partida.idGerenciador);
				partidasAtivasRemovidas++;
			}
		}

		momentoAtual = System.currentTimeMillis();

		for (Gerenciador partida : Panel.partidasEmEspera.values()) {
			if (momentoAtual - partida.momentoUltimaAlteracao > tempoLimite) {
				Panel.partidasEmEspera.remove(partida.idGerenciador);
				partidasEmEsperaRemovidas++;
			}
		}

		System.out.printf(
				"Foram removidas %s partidas ativas e %s partidas em espera\n",
				partidasAtivasRemovidas, partidasEmEsperaRemovidas);
	}
}
